#ifndef APPLICATION_LOG_H
#define APPLICATION_LOG_H

#include <iostream>

class ApplicationLog
{
    public:
        
        enum Severity_t { DEBUG=0, INFO, WARNING, ERROR, FATAL };
        
        static void Print(const char* msg, Severity_t severity = DEBUG);
        
        static void Print(const char* msg, int code, Severity_t severity = DEBUG);
        
        static void SetMinimumLogLevel(Severity_t severity);
        
        static ApplicationLog* GetInstance();
        
    private:
        
        static Severity_t _min_log_level;
        
        ApplicationLog();
        
        static ApplicationLog* _instance;
};

#endif
